SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spGenerarValoresDeLiquidacion]
@Mes Int,
@Anio Int,
@Tipo Int
AS
-- 20/08/2008 a Causa de los cambios en tb_suborganizaciones del NivelEnseñanza agregue en EGB el 13
Set Dateformat DMY
SET NOCOUNT ON

If Not Exists (Select * From tb_ValoresDeSubsidios Where Mes = @Mes And Anio = @Anio And Tipo = @Tipo)
Begin
Declare Organizaciones Cursor Static For
	Select Organizacion, idLiquidacion From tb_Liquidaciones Where Month(Hasta) = @Mes And Year(Hasta) = @Anio 

Declare @MontoDescuento Float, @MontoHaberes Float, @IdOrganizacion Int, @IdLiquidacion Int, @TotalEGB Float,
	@TotalPOLIMODAL Float, @TotalSUPERIOR Float, @TotalIndefinido Float, @AnexoI Float, @AnexoII Float, @AnexoIII Float, @ATransferir Float

Open Organizaciones

Fetch Next From Organizaciones Into @idOrganizacion, @IdLiquidacion

While @@Fetch_Status = 0
Begin
	Select @AnexoI = 0, @AnexoII = 0, @AnexoIII = 0, @Atransferir = 0, @TotalEGB = 0, @TotalPOLIMODAL = 0, @TotalINDEFINIDO = 0, @TotalSUPERIOR = 0
--NIVEL EGB
	Select @MontoHaberes = 0, @MontoDescuento = 0
	Select @MontoHaberes = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.FechaBaja Is Null And P.SubOrganizacion = So.idSubOrganizacion 
--	And So.Nivel = 3		Adriana  20/08/2008
	And So.Nivel in ( 3,13)	
	And Liquidacion  = @IdLiquidacion And Concepto In (24, 12)
	
	Select @MontoDescuento = IsNull(Sum( (MontoDescuento*PorcentajeSubsidio)/100 ),0) 	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.Fechabaja Is Null And P.SubOrganizacion = So.idSubOrganizacion 
--	And So.Nivel = 3		Adriana  20/08/2008
	And So.Nivel in ( 3,13)	
	And (PorcentajeSubsidio Is Not Null Or PorcentajeSubsidio > 0)
	And Liquidacion = @IdLiquidacion And Concepto In (15, 10, 26, 30, 11, 13, 14, 25)
		Select @TotalEGB = @MontoHaberes + @MontoDescuento

--NIVEL POLIMODAL
	Select @MontoHaberes = 0, @MontoDescuento = 0
	Select @MontoHaberes = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.FechaBaja Is Null And P.SubOrganizacion = So.idSubOrganizacion And So.Nivel = 4
	And Liquidacion  = @IdLiquidacion And Concepto In (24, 12)
	
	Select @MontoDescuento = IsNull(Sum( (MontoDescuento*PorcentajeSubsidio)/100 ),0) 	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.Fechabaja Is Null And P.SubOrganizacion = So.idSubOrganizacion 
	And So.Nivel = 4
	And (PorcentajeSubsidio Is Not Null Or PorcentajeSubsidio > 0)
	And Liquidacion = @IdLiquidacion And Concepto In (15, 10, 26, 30, 11, 13, 14, 25)

	Select @TotalPOLIMODAL = @MontoHaberes + @MontoDescuento

--NIVEL SUPERIOR
	Select @MontoHaberes = 0, @MontoDescuento = 0
	Select @MontoHaberes = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.FechaBaja Is Null And P.SubOrganizacion = So.idSubOrganizacion 
	And So.Nivel = 5
	And Liquidacion  = @IdLiquidacion And Concepto In (24, 12)
	
	Select @MontoDescuento = IsNull(Sum( (MontoDescuento*PorcentajeSubsidio)/100 ),0) 	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.Fechabaja Is Null And P.SubOrganizacion = So.idSubOrganizacion 
	And So.Nivel = 5
	And (PorcentajeSubsidio Is Not Null Or PorcentajeSubsidio > 0)
	And Liquidacion = @IdLiquidacion And Concepto In (15, 10, 26, 30, 11, 13, 14, 25)

	Select @TotalSUPERIOR = @MontoHaberes + @MontoDescuento

--NIVEL INDEFINIDO	
	Select @MontoHaberes = 0, @MontoDescuento = 0
	Select @MontoHaberes = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.FechaBaja Is Null And P.SubOrganizacion = So.idSubOrganizacion 
	And So.Nivel = 12
	And Liquidacion  = @IdLiquidacion And Concepto In (24, 12)
	
	Select @MontoDescuento = IsNull(Sum( (MontoDescuento*PorcentajeSubsidio)/100 ),0) 	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.Fechabaja Is Null And P.SubOrganizacion = So.idSubOrganizacion 
	And So.Nivel = 12
	And (PorcentajeSubsidio Is Not Null Or PorcentajeSubsidio > 0)
	And Liquidacion = @IdLiquidacion And Concepto In (15, 10, 26, 30, 11, 13, 14, 25)

	Select @TotalINDEFINIDO = @MontoHaberes + @MontoDescuento
	Select @TotalEGB = @TotalEGB + @TotalINDEFINIDO

	Select @AnexoI = @TotalEGB + @TotalPOLIMODAL + @TotalSUPERIOR 

	Select @AnexoII = IsNull(Sum(MontoDescuento),0) From tb_RegistroDeLiquidaciones Where Liquidacion = @idLiquidacion And Concepto = 30

	Select @AnexoIII = IsNull(Sum(MontoDescuento),0) From tb_RegistroDeLiquidaciones Where Liquidacion = @idLiquidacion And Concepto In (11, 10)

	Select @ATransferir = @AnexoI - (@AnexoII + @AnexoIII)

	Insert tb_ValoresDeSubsidios Select @idOrganizacion, @TotalEGB, @TotalPOLIMODAL, @TotalSUPERIOR, @AnexoI, @AnexoII, @AnexoIII, @ATransferir, @Anio, @Mes, @Tipo

	Fetch Next From Organizaciones Into @idOrganizacion, @IdLiquidacion
End

Close Organizaciones
Deallocate Organizaciones
End
GO
